package com.ysd.upload.service.impl;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;

import org.apache.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.ysd.upload.common.JSONResult;
import com.ysd.upload.service.UploadService;
import com.ysd.upload.util.UUIDUtil;

@Service
public class UploadServiceImpl implements UploadService{
	// 默认 本地存储路径
	private final String save_local_path = "C:/uploadfile";
	// 默认 文件保存路径
	private String save_context_path = "upload/imgs/";

	public void setSavePath(String savePath) {
		this.save_context_path = savePath;
	}

	/**
	 * 阿里云文件上传
	 * 
	 * @param MultipartFile file 文件流
	 * @return String 文件引用路径 如 String filePath =
	 *         "http://aliyun.xxxx.xxxx/xxxx/xxxx/xxxx.jpg"
	 */
	@Override
	public JSONResult<String> aliyunUploadFile(MultipartFile file) {
		
		JSONResult<String> result = JSONResult.build(HttpStatus.SC_OK, "success", null);
		// 获取文件名称
		String fileName = file.getOriginalFilename();
		// 生成存储路径
		String save_handler_path = save_local_path + save_context_path;
		// 获得文件后缀
		String prefix = fileName.substring(fileName.lastIndexOf("."));
		// 存储目录
		File parentDir = new File(save_handler_path);
		// 存储目录是否存在
		if (!parentDir.exists()) {
			parentDir.mkdirs();
		}
		// 生成文件存储名称
		String fileSaveName = UUIDUtil.getUUID() + prefix;
		try {
			File saveFile = new File(save_handler_path, fileSaveName);
			// 移动临时文件
			file.transferTo(saveFile);
			// 新增阿里云文件上传
			AliyunUpload aliyunUpload = new AliyunUpload();
			String fileUrl = aliyunUpload.uploadFile(save_handler_path + fileSaveName,
					save_context_path + fileSaveName);
			saveFile.delete();
			result.setData(fileUrl);
		} catch (Exception e) {
			result.setMsg("文件上传失败！" + e);
			result.setStatus(-1);
		}
		return result;
	}

	/**
	 * 文件存储
	 * 
	 * @param MyltipartFile file 文件资源
	 * @return 文件文件存储地址
	 */
//	private String localUploadFile(MultipartFile file, HttpServletRequest request) {
//		// 获取文件名称
//		String fileName = file.getOriginalFilename();
//		// 生成存储路径
//		String save_handler_path = save_local_path + save_context_path;
//		// 获得文件后缀
//		String prefix = fileName.substring(fileName.lastIndexOf("."));
//		// 存储目录
//		File parentDir = new File(save_handler_path);
//		// 存储目录是否存在
//		if (!parentDir.exists()) {
//			parentDir.mkdirs();
//		}
//		// 生成文件存储名称
//		String fileSaveName = UUIDUtil.getUUID() + String.valueOf(new Date().getTime()) + prefix;
//		try {
//			// 移动临时文件
//			file.transferTo(new File(save_handler_path, fileSaveName));
//			// 文件地址
//			return save_context_path + fileSaveName;
//		} catch (IOException e) {
//			return null;
//		}
//	}
}